<?php
/*
 * FileName JHPHP.php
 * Date		2012-6-14
 * Author	jime
 * Mail 	me@joyphper.net
 * QQ		97142822
 * Copyright (C) 2012 joyphper.net
 */
if (! defined ( 'App_PATH' ))exit ( 'request error' );

import("core/AppBaseController.php");

class JHPHP{
	private $app;
	private $mod;
	private $act;
	public function __construct(){
		$this->app=isset($_REQUEST[C("default_url.application")])?$_REQUEST[C("default_url.application")] 	: C("default_route.application");
		$this->mod=isset($_REQUEST[C("default_url.controller")]) ?$_REQUEST[C("default_url.controller")] 	: C("default_route.controller");
		$this->act=isset($_REQUEST[C("default_url.action")]) 	 ?$_REQUEST[C("default_url.action")] 		: C("default_route.action");
	}
	public function run(){

		ob_start(); //控制输出

		//设置运行时区
		if(strtolower(date_default_timezone_get())!=strtolower("Asia/Hong_Kong"))
			date_default_timezone_set('Asia/Hong_Kong');

		//配置文件中如果设置了自动打开sess则在此处打开session，全站有效
		if(C('auto_session')) @session_start();

		//文件编码采用UTF-8
		header("Content-type: text/html; charset=utf-8");

		// 获取当选控制器文件
		$CtrlFile=C('sys_dir.ctrl').'/'.$this->app.'/'.$this->mod.'.class.php';

		//检查控制器是否存在
		if(is_file(App_PATH."/".$CtrlFile))
			import($CtrlFile); //引入模型文件
		else
			appError(App_PATH."/".$CtrlFile."控制器不存在！");

		$Ctrl="";
		//初始化模型
		eval('$'."Ctrl=new ".$this->mod."_ctrl('".$this->app."');");

		//检查模型中是否存在请求的方法
		if(!method_exists($Ctrl,$this->act)) appError($this->act."在控制器".$this->mod.".class.php中不存在！");

		//屏蔽mod中的构造函数
		if(method_exists($Ctrl,$this->mod)) appError("控制器方法中不允许与控制器同名的方法！");
		if(method_exists($Ctrl,'__construct'))appError("控制器方法中不允许存在__construct方法！");

		//屏蔽mod中的__call函数
		//if(method_exists($Ctrl,'__call')) appError("控制器中不允许使用__call方法");

		eval('$'."Ctrl->".$this->act."();");
	}
}
?>
